home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 142
/
Gekkan Dennou Club - 2000.3 Vol. 142 (Japan).7z
/
Gekkan Dennou Club - 2000.3 Vol. 142 (Japan) (Track 1).bin
/
tools
/
s_tool
/
_x250.c
< prev
next >
Wrap
Text File
|
1997-10-16
|
6KB
|
291 lines
#include "JX250.H"
#include <sys\iocs.h>
#include <sys\dos.h>
#include <sys\scsi.h>
#include <stdlib.h>
//====== 環境ファイルに記録
//--- SCSI ID
int SCSI_ID;
//--- プリ座標
int PreX1,PreY1;
int PreX2,PreY2; //
int PreXV1,PreYV1; // 表示座標に変換した物
int PreXV2,PreYV2;
int PreBai; // 0;標準 1;x2 2;x3 3;x4
int PrePX,PrePY; // 拡大表示の時のイメージ表示座標
int PreViewS; // 0;画質。1;速度
//--- スキャンサイズ
int ScanDpiX,ScanDpiY;
int ScanDotX,ScanDotY;
int ScanSpeed; // 0;低速。1;速度
//--- 補正
int Bright; // 濃度
int LightM; // 明度
int LightR; // 明度
int LightG; // 明度
int LightB; // 明度
int GammaM; // γ *100 の値
int GammaR; // γ
int GammaG; // γ
int GammaB; // γ
int ThreM; // しきい値
int ThreR; // しきい値
int ThreG; // しきい値
int ThreB; // しきい値
//--- モード
int ScanMode; // スキャン値の単位 0;DPI 1;DOT
int PreUnit; // プリスキャン値の単位 0;dot 1;cm 2;inch
int ImageMode; // 0;カラー 1;白黒
int ImageColMode; // 0;多値 1;二値
int ImageDirec; // 0;縦 1;横
int PojiNegaMode; // 0;ポジ 1;ネガ
int DropColor; // 0;なし 1;R 2;G 3;B
int FullColor; // 0;64k color 1;24bit color
//--- JPEG
UNchar JpegSwc[128]; // Jpeg セーブの文字列
//--- その他
int AspMode; // 「画像」の 0;(2:3) 1;(1:1)
//====== 非記録
//---
UNchar *ScanData; //「画像」データのポインタ
int ScanDataX; //「画像」の大きさ
int ScanDataY; //「画像」の大きさ
UNchar *PreData; // [(232)*(480)*2]; // 「プリスキャン」データ
//===
UNshort olgtcl[16];
UNchar diabak[165*205*2]; // ダイアログ用のバッファ
int orgerrvct;
char CUR_path[256]; /*起動時のパス*/
UNchar *MAP;
void END_DISP();
/*--------------------------------------------------*/
void main(ar,av)
int ar;
UNchar **av;
{
int i,j,m,n,l,x,y,z,r,g,b;
int ssp;
UNchar *M,*N;
UNchar buf[256];
UNchar cnfn[256];
int matfg;
int ggcfg;
matfg=0;
ggcfg=0;
printf( "X68k JX250 TOOL Version 1.00 Copyright 1997 満開製作所/TNB製作所\n" );
//---- コマンドライン解析
for(i=1;i<ar;i++){
if ( av[i][0]=='-' || av[i][0]=='/' ){
switch(av[i][1]|0x20){
case('s'):
PreViewS=1; // 0;画質。1;速度
break;
case('x'):
FullColor=1; // 0;64k color 1;24bit color
break;
case('i'):
//--- SCANNER ID
SCSI_ID=atoi(&av[i][2]);
break;
case('f'):
//--- コンフィグファイル指定
jstrcpy(cnfn,&av[i][2]);
break;
case('v'):
//--- MATIER の仮想画面に読み込む。環境変数`MATIER'が必要です。\n"
matfg=-1;
ggcfg=-1;
break;
case('c'):
ggcfg=-1;
break;
case('p'):
case('b'):
case('y'):
break;
case('h'):
case('?'):
Help();
return;
default:
printf(" スイッチが異常です。\n");
return;
}
} else {
printf(" コマンドラインが異常です。\n");
return;
}
}
//--- メモリ確保
PreData=_dos_malloc( (232)*(480)*2 ); // 「プリスキャン」データ
if ( PreData>=0x81000000 ){
i=PreData;
i&=0x00FFFFFF;
printf(" メモリが足りません。後 %d byte 必要です。\n",((232)*(480)*2)-i);
return;
} else {
UNint *MM;
MM=PreData;
for(i=0;i<((232)*(480)*2)/4;i++)
*MM++=0;
}
//--- MAT チェック
mat_vadds=0;
if ( matfg!=0 ){
if ( MatDefRead() ){
printf("\n [何かキーを押して下さい]\n");
_dos_kflushio(0xFF);
_dos_inkey();
_dos_kflushio(0xFF);
return;
}
}
//--- 画面準備
GetDrvDir(0,CUR_path);
GetDrvDir(0,Apath);
//--- 画面準備
orgerrvct=_dos_intvcs(0xFFF1,(void*)END_DISP);
ssp=_iocs_b_super(0);
for(i=0;i<16;i++)
olgtcl[i]=*(UNshort*)(0xe82200+i*2);
if ( ssp>=0 )
_iocs_b_super(ssp);
_iocs_tgusemd(0,2);
_iocs_tgusemd(1,2);
mouse(1);
_dos_c_curoff();
_iocs_crtmod(12);
_iocs_g_clr_on();
TXCLS(0);
SetMsPat();
MsPat(-1);
//-------- 初期化
SCSI_ID=0;
ScanMode=0;
ScanDotX=512*DOTB;
ScanDotY=512*DOTB;
PreX1=0;
PreY1=0;
PreX2=6000;
PreY2=6000;
LightM=0x8000; // 明度
LightR=0x8000;
LightG=0x8000;
LightB=0x8000;
Bright=128; // 濃度
GammaM=100; // γ
GammaR=100;
GammaG=100;
GammaB=100;
ThreM=128; // しきい値
ThreR=128;
ThreG=128;
ThreB=128;
RecSavMode=1; // 0;CUT 1;PIC 2;JPEG 3;PIC2 4;JPEG 5;RGB
GrayPoint=15; // グレイスケールの値
MonoPoint=15; // 二値化の値
//--
ChDrvDir(CUR_path);
ReadCnf(0);
//--
InitScrren();
//--------
for(;;){
move();
if ( Dialog(0,"環境を記録しますか?",0,2)!=0 )
break; // いいえ=おわり
ChDrvDir(CUR_path);
if ( CreateCnf(0)==0 )
break; // 成功=おわり
i=Dialog(
"環境ファイルの書き出しに失",
"敗しました。終了してもよろ",
"しいですか?",
2
);
if ( i==0 )
break; // よろしい=おわり
}
if ( ggcfg!=0 && ScanData!=0 ){
//printf(" 画面は残す~\n");
RecVwBai=0;
END_DISP_();
_iocs_b_wpoke(0xE82600,0x193F);
ScanGraphView(0,0,1);
return;
}
END_DISP();
}
/*****************************************
終わり
**************************************/
void END_DISP()
{
_iocs_g_clr_on();
_iocs_crtmod(16);
_dos_c_fnkmod(0);
egs_sub();
END_DISP_();
exit(0);
}
/*+++++++++++*/
void END_DISP_()
{
int i,j,ssp;
int *a;
TXCLS(1); //全TEXT 掃除
ssp=_iocs_b_super(0);
if ( olgtcl[15]!=0 ){
for(i=0;i<16;i++)
*(UNshort*)(0xe82200+i*2)=olgtcl[i];
}
*(UNchar*)0xe8e007&=0xFD;
if ( ssp>=0 )
_iocs_b_super(ssp);
_dos_c_curon();
mouse(2);
mouse(0);
_dos_kflushio(0xFF);
_dos_breakck(0); /*break on*/
_iocs_tgusemd(0,0);
_iocs_tgusemd(1,1);
_dos_intvcs(0xFFF1,orgerrvct);
ChDrvDir(CUR_path);
}
/*****************************************
ヘルプ
**************************************/
void Help()
{
printf( "\n"
"[使用法] S_TOOL25.x [switch]\n"
"\n"
" [switch]\n"
" /V ・・・・・・・・・・・・ MATIER の仮想画面に読み込む。環境変数`MATIER'\n"
" の設定が必要です。\n"
" /C ・・・・・・・・・・・・ 終了時、グラフィック画面をクリアしない。\n"
// " /A ・・・・・・・・・・・・ 起動後スキャニングし終了する。画像データは\n"
// " VRAM に残る。\n"
// " /1 ・・・・・・・・・・・・ 画像画面を 1:1 にする。\n"
" /I[n] ・・・・・・・・・ JX250 の接続している SCSI-ID を指定。\n"
// " /S ・・・・・・・・・・・・ プレスキャン、画像より速度を優先させる。\n"
" /F[cnfname] ・・・ 環境ファイル名を指定。指定がない場合\n"
" S_TOOL25.x と同じディレクトリの S_TOOL25.CNF\n"
" を使用する。\n"
// " /W[path] ・・・・・・ メモリがたりない場合のテンポラリファイルのパ\n"
// " スを指定する。指定がない場合メモリ切れで中断\n"
// " する\n"
"\n"
// " 環境変数`JX250'がコマンドラインに付加されます。\n"
// "\n"
);
}